#define _CRT_SECURE_NO_WARNINGS 1
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        return dfs(head);
    }
    ListNode* dfs(ListNode* pcur)
    {
        if (pcur == nullptr || pcur->next == nullptr) return pcur;
        ListNode* tmp = dfs(pcur->next->next);
        ListNode* pnext = pcur->next;
        pcur->next->next = pcur;
        pcur->next = tmp;
        return pnext;
    }
};